package hocusPocus.Controllers;

import hocusPocus.IHM.ChoixFinTour;
import hocusPocus.IHM.EchangerMainGrimoire;
import hocusPocus.IHM.LimiteCarteMain;
import hocusPocus.IHM.InteractionJoueur;
import hocusPocus.IHM.InterfacePlateau;
import hocusPocus.Partie.AnalyseZoneDeJeu;
import hocusPocus.Partie.Plateau;
import hocusPocus.Partie.ResoudrePouvoirHocus;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

public class ControllerInterfacePlateau implements ActionListener{
	private InterfacePlateau interfacePlateau;
	private boolean isPossible; 
	private Plateau plateau;
	public ControllerInterfacePlateau(InterfacePlateau interfacePlateau) {
		this.interfacePlateau = interfacePlateau;
		this.plateau = Plateau.getInstance();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()!=null) {
			if(e.getSource() == interfacePlateau.btnJouerCarte) { // Clic sur JouerCarte
				isPossible = plateau.getJoueurCourant().jouerCarte(interfacePlateau.getCarteSelectionee());
				if(!isPossible) {
					JOptionPane.showMessageDialog(null,"Impossible de joueur ce type de carte.\n Pour plus de detail: Aide>RegleDuJeu ","ERREUR",JOptionPane.ERROR_MESSAGE);
				}else {
					if(plateau.getJoueurReagissant() == null || plateau.getJoueurCourant().equals(plateau.getJoueurReagissant())) 
						interfacePlateau.rafraichirPanelJoueurCourant(); // On rafraichit apres pose de la carte
					else
						interfacePlateau.rafraichirPanelJoueurReagissant();
					
					interfacePlateau.rafraichirPanelZoneDeJeu();
					interfacePlateau.rafraichirPanelListeJoueurs();
					AnalyseZoneDeJeu analyse = new AnalyseZoneDeJeu();
					analyse.Analyse(); //
					interfacePlateau.btnJouerCarte.setEnabled(false); // On desactive le bouton jusqu'a ce qu'une carte soit selectionnnee
				}
			}
			if(e.getSource() == interfacePlateau.btnPasserTour) {
				System.out.println("Terminer le tour");
				new ChoixFinTour(interfacePlateau);		
			}
			if(e.getSource() == interfacePlateau.btnEchangerCartes) {
				new EchangerMainGrimoire(interfacePlateau);
			}
		}
	}
}
